import * as bcrypt from 'bcrypt';

/**
 * 密码加密工具类（后端专用）
 */
export class CryptoUtil {
  private static readonly SALT_ROUNDS = 10;

  /**
   * 加密密码
   * @param password 明文密码
   * @returns 加密后的密码
   */
  static async hashPassword(password: string): Promise<string> {
    return bcrypt.hash(password, this.SALT_ROUNDS);
  }

  /**
   * 验证密码
   * @param password 明文密码
   * @param hash 加密后的密码
   * @returns 是否匹配
   */
  static async comparePassword(password: string, hash: string): Promise<boolean> {
    return bcrypt.compare(password, hash);
  }

  /**
   * 生成随机盐值
   * @param rounds 加密轮数，默认 10
   * @returns 盐值
   */
  static async genSalt(rounds: number = this.SALT_ROUNDS): Promise<string> {
    return bcrypt.genSalt(rounds);
  }
}

